package com.huhao.wshare.service;

import com.huhao.wshare.dto.Dynamic.CommentCreateDTO;
import com.huhao.wshare.dto.Dynamic.DynamicCreateDTO;
import com.huhao.wshare.dto.Dynamic.DynamicDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import com.huhao.wshare.dto.Dynamic.CommentDTO;

public interface DynamicService {

    DynamicDTO createDynamic(Long userId, DynamicCreateDTO createDTO);
    /**
     * 【新增】修改动态
     * @param userId 当前登录用户的ID，用于权限验证
     * @param dynamicId 要修改的动态ID
     * @param updateDTO 包含动态新内容的数据传输对象
     * @return 修改后的动态DTO
     */
    DynamicDTO updateDynamic(Long userId, Long dynamicId, DynamicCreateDTO updateDTO);

    void deleteDynamic(Long userId, Long dynamicId);

    Page<DynamicDTO> getFriendDynamics(Long userId, Pageable pageable);

    Page<DynamicDTO> getUserDynamics(Long targetUserId, Long currentUserId, Pageable pageable);

    void likeDynamic(Long userId, Long dynamicId);

    void unlikeDynamic(Long userId, Long dynamicId);

    CommentDTO addComment(Long userId, Long dynamicId, CommentCreateDTO createDTO);

    /**
     * 【新增】修改评论
     * @param userId 当前登录用户的ID，用于权限验证
     * @param commentId 要修改的评论ID
     * @param updateDTO 新的评论内容
     * @return 修改后的评论DTO
     */
    CommentDTO updateComment(Long userId, Long commentId, CommentCreateDTO updateDTO);

    /**
     * 【新增】删除评论
     * @param userId 当前登录用户的ID，用于权限验证
     * @param commentId 要删除的评论ID
     */
    void deleteComment(Long userId, Long commentId);
}
